home *** CD-ROM | disk | FTP | other *** search
/ Megarom / Megarom Macintosh CD Software (Quantum Leap)(1992).iso / COMMUNICATION / BBS Software Systems / Hermes ƒ / HEI 1.0.7 / HermHeaders.p next >
Text File  |  1991-01-13  |  21KB  |  583 lines

  1. unit HermHeaders;
  2.  
  3. interface
  4.     const
  5.         ACTIVEEXT = 1;{values for message field to user external}
  6.         IDLE = 2;
  7.         CLOSENODE = 3;
  8.         CLOSEEXTERNAL = 4;
  9.  
  10.     type
  11.  
  12. {following is found in the BBsy resource in the }
  13. {Hermes Shared file.}
  14.         SecLevRec = record
  15.                 UseDayorCall: boolean;   {minutes per day is true, min/call is false}
  16.                 ReadAnon: boolean;
  17.                 TimeAllowed: integer;
  18.                 MesgDay: integer;
  19.                 DLRatioOneTo: integer;
  20.                 PostRatioOneTo: integer;
  21.                 CallsPrDay: integer;
  22.                 LnsMessage: integer;
  23.             end;
  24.         SystHand = ^SystPtr;
  25.         SystPtr = ^SystRec;
  26.         SystRec = record
  27.                 OverridePass: string[9];
  28.                 NewUserPass: string[9];
  29.                 NumCalls: longint;
  30.                 NumUsers: integer;
  31.                 OpStartHour: longint;
  32.                 OpEndHour: longint;
  33.                 Closed: boolean;
  34.                 NewFrmAccess: packed array[1..10] of boolean;
  35.                 Unused: packed array[1..7] of boolean;
  36.                 NewSL: integer;
  37.                 NewDSL: integer;
  38.                 LastMaint: DateTimeRec;
  39.                 AnonyUser: integer;
  40.                 AnonyAuto: boolean;
  41.                 SerialNumber: string[40];
  42.                 SecLevels: array[1..255] of SecLevRec;
  43.                 MsgsPath: str255;
  44.                 MustRead: boolean;
  45.                 callsToday: integer;
  46.                 mPostedToday: integer;
  47.                 eMailToday: integer;
  48.                 uploadsToday: integer;
  49.                 minsToday: integer;
  50.                 MessComp: real;
  51.                 XferComp: real;
  52.                 qScanPointer: longint;
  53.                 TwoWayChat: boolean;
  54.                 UseXWind: boolean;
  55.                 ColorLogs: boolean;
  56.                 AllowHandles: boolean;
  57.                 FreePhone: boolean;
  58.                 ClosedTransfers: boolean;
  59.                 ProtocolTime: integer;
  60.                 DefaFore: integer;  {mapped to old style quickdraw 8-colors}
  61.                 DefaBack: integer;  {same as above}
  62.                 twoColorChat: boolean;
  63.                 TabbyNet: boolean;
  64.                 SubLaunchTabby: boolean;
  65.                 NewStrics: packed array[1..26] of boolean;
  66.                 Reserved: packed array[1..92] of char;
  67.             end;
  68.  
  69. {following is the MesD resource for Directory data}
  70.         DirInfoRec = record
  71.                 DirName: string[41];
  72.                 Path: str255;
  73.                 MinDSL: byte;
  74.                 DSLtoUL: byte;
  75.                 MaxFiles: integer;
  76.                 Restriction: char;
  77.                 NetID: integer;
  78.                 mode: byte;   {  -1 = Never New, 0=Normal , 1= Always New  }
  79.                 MinAge: byte;
  80.                 FileNameLength: byte;
  81.             end;
  82.         dirDataPtr = ^dirDataFile;
  83.         DirDataFile = record
  84.                 numDirs: byte;
  85.                 Dr: array[0..63] of DirInfoRec;
  86.             end;
  87.  
  88.  
  89. {following is the MesD resource in the Shared file for Message sections}
  90.         SubBoardRec = record
  91.                 Name: string[41];
  92.                 SLtoRead: integer;
  93.                 SLtoPost: integer;
  94.                 MaxMessages: integer;
  95.                 AnonID: byte;   {0=never, 1=force, -1=allow}
  96.                 MinAge: integer;
  97.                 SubType: integer;
  98.                 StoreType: boolean;{true is one file, false multiple}
  99.                 restrict: char;
  100.                 Threading: boolean;
  101.                 EchoConf: boolean;
  102.                 Excess: packed array[1..7] of char;
  103.             end;
  104.         MDescPtr = ^MDescRec;
  105.         MDescRec = record
  106.                 numForums: integer;
  107.                 Forums: array[1..10] of string[41];
  108.                 numBoards: array[1..10] of integer;
  109.                 Boards: array[1..10, 1..30] of SubBoardRec;
  110.             end;
  111.  
  112. {following is the struct for MesD ID=2 for GFile section data}
  113.         GFileSec = record
  114.                 SecName: string[50];
  115.                 minSL: integer;
  116.                 minAge: integer;
  117.                 reserved: packed array[1..15] of char;
  118.             end;
  119.         GFileSecPtr = ^GFileSecRec;
  120.         GFileSecRec = record
  121.                 numSecs: integer;
  122.                 Sections: array[1..30] of GfileSec;
  123.             end;
  124.  
  125. {following is the record passed to type 1 Hermes externals}
  126.         HermDataPtr = ^HermDataRec;
  127.         HermDataRec = record
  128.                 HSystPtr: SystPtr;
  129.                 HMDescPtr: MDescPtr;
  130.                 HDirDataPtr: dirDataPtr;
  131.                 HGFilePtr: GFileSecPtr;
  132.                 SharedPath: StringPtr;
  133.                 reserved2: longint;
  134.                 reserved3: longint;
  135.             end;
  136.  
  137. {following is the User record stored consecutively in the DATA fork of the}
  138. {Hermes Shared file.}
  139.  
  140.         UserRec = record
  141.                 UserNum: integer;
  142.                 UserName: string[31];
  143.                 RealName: string[21];
  144.                 Phone: string[12];
  145.                 Password: string[9];
  146.                 lastOn: longInt;
  147.                 firstOn: longInt;
  148.                 SysopNote: string[41];
  149.                 sex: boolean; {male is 1, female is 0}
  150.                 age: byte;
  151.                 Deleting: boolean;
  152.                 ComputerType: byte;
  153.                 DefaultProtocol: byte;
  154.                 SecLevel: Integer;
  155.                 TransferLevel: integer;
  156.                 MsgFrmAccess: packed array[1..10] of boolean;
  157.                 Restrics: packed array[1..26] of boolean;
  158.                 Mailbox: boolean;  {false is normal, true is forwarded}
  159.                 ForwardedTo: integer;
  160.                 onToday: integer;
  161.                 MinOnToday: integer;
  162.                 MessagesPosted: integer;
  163.                 MPostedToday: integer;
  164.                 EMailSent: integer;
  165.                 EMsentToday: integer;
  166.                 NumUploaded: integer;
  167.                 NumDownloaded: integer;
  168.                 UploadedK: longint;
  169.                 DownloadedK: longint;
  170.                 LastBaud: integer;
  171.                 LastVoted: longint;
  172.                 ScrnWdth: integer;
  173.                 ScrnHght: integer;
  174.                 CanANSI: boolean;
  175.                 ANSIColor: boolean;
  176.                 Foregrounds: packed array[0..8] of byte;
  177.                 Backgrounds: packed array[0..8] of byte;
  178.                 Bolds: packed array[0..8] of boolean;
  179.                 Underlines: packed array[0..8] of boolean;
  180.                 PauseScreen: boolean;
  181.                 TotalLogons: integer;
  182.                 totalTimeOn: longint;
  183.                 illegalLogons: integer;
  184.                 WhatNScan: packed array[1..10, 1..30] of boolean;
  185.                 LastMsgs: array[1..10, 1..30] of longint;
  186.                 Expert: boolean;
  187.                 BirthDay: char;
  188.                 BirthMonth: char;
  189.                 BirthYear: char;
  190.                 lastFileScan: longInt;
  191.                 NTransAfterMess: boolean;
  192.                 votes: packed array[1..19] of byte;
  193.                 ExtendedLines: byte;
  194.                 screenClears: boolean;
  195.                 coSysop: boolean;
  196.                 alertOn: boolean;
  197.                 reserved: packed array[1..47] of char;
  198.             end;
  199.  
  200.         BDact = (ListText, Prompt, None, Chat, Writing, Repeating);
  201.  
  202.         aLine = packed array[1..80] of char;
  203.  
  204.         FidoAddress = record
  205.                 name: string[81];
  206.                 atNode: string[15];
  207.             end;
  208.  
  209.         MessgHand = ^MessgPtr;
  210.         MessgPtr = ^HermesMesg;
  211.         HermesMesg = array[1..300] of string[161];
  212.  
  213.         ScrnKeysHnd = ^ScrnKeysPtr;
  214.         ScrnKeysPtr = ^ScrnKeys;
  215.         ScrnKeys = array[0..1000] of aLine;
  216.  
  217.         PtrToLong = ^longint;
  218.         PtrToWord = ^integer;
  219.  
  220.         indxHand = ^indxPtr;
  221.         indxPtr = ^indxRec;
  222.         indxRec = array[0..2047] of integer;
  223.  
  224.         MesgRec = record
  225.                 Title: string[80];
  226.                 AnonyID: byte; {for now, 0=no anony and 1=anony}
  227.                 Deletable: boolean;
  228.                 ownerSystem: integer;
  229.                 ownerUser: integer;
  230.                 QScnPtr: longint;
  231.                 daten: longint;
  232.                 storedAs: longint;
  233.                 StorageType: boolean;   {true is one file, false is lots of files}
  234.             end;
  235.         SubDynamicRec = array[0..90000] of MesgRec;
  236.         SubDyPtr = ^SubDynamicRec;
  237.         SubDyHand = ^SubDyPtr;
  238.  
  239.         FilEntryRec = record
  240.                 flName: string[20];            {list file name}
  241.                 realFName: string[31];       {real file name on desktop}
  242.                 flDesc: string[59];             {file description}
  243.                 whenUL: longInt;                   {exact time uploaded in Mac date format from Jan 1, 1904}
  244.                 UploaderName: string[41];  {user name of uploader}
  245.                 UploaderNum: integer;          {user number of uploader}
  246.                 UploaderSys: integer;           {set to zero for now.  Intended for WWIVnet compatibility.}
  247.                 numDLoads: integer;             {how many times this has been dl'd}
  248.                 ByteLen: longInt;                  {length of file in bytes}
  249.                 HasExtended: boolean;          {boolean}
  250.                 FileStat: char;
  251.                 lastDL: longint;
  252.                 Reserved: packed array[1..4] of char;   {set to nulls for now}
  253.             end;
  254.  
  255.         aDirHand = ^aDirPtr;
  256.         aDirPtr = ^aDirFile;
  257.         aDirFile = array[0..90000] of filentryrec;
  258.  
  259.         emailrec = record
  260.                 title: string[80];
  261.                 Anony: boolean;
  262.                 FromSys: integer;
  263.                 FromUser: integer;
  264.                 ToSys: integer;
  265.                 ToUser: integer;
  266.                 DateSent: longint;
  267.                 StoredAs: longint;
  268.                 MType: byte;  {1=normal, 0=he read message}
  269.                 multiMail: boolean;
  270.             end;
  271.         MesgHand = ^MesgPtr;
  272.         MesgPtr = ^EMDynamicRec;
  273.         EMDynamicRec = array[0..80000] of EMailRec;
  274.  
  275.         PathsFilesRec = record
  276.                 fName: StringHandle;
  277.                 mbName: stringHandle;
  278.                 myvRef: integer;
  279.                 myDirID: longint;
  280.                 myFileID: longint;
  281.             end;
  282.         XFERStuffHand = ^XFERStufPtr;
  283.         XFERStufPtr = ^XFERStuff;
  284.         XFERstuff = packed record
  285.                 modemInput: integer;
  286.                 modemOutput: integer;
  287.                 procID: integer;
  288.                 protocolData: handle;
  289.                 errorReason: stringHandle;
  290.                 timeOut: integer;
  291.                 fileCount: integer;
  292.                 filesDone: integer;
  293.                 curBytesDone: longint;
  294.                 curBytesTotal: longint;
  295.                 curStartTime: longint;
  296.                 flags: packed array[0..15] of boolean;
  297.                 fPaths: packed array[1..1] of pathsFilesRec;
  298.             end;
  299.  
  300.         ProcList = record
  301.                 procID: integer;
  302.                 itemID: integer;
  303.                 HMenuID: integer;
  304.                 HItemID: integer;
  305.                 subName: stringHandle;
  306.                 pFlags: integer;
  307.                 funcMask: integer;
  308.                 refCon: longint;
  309.             end;
  310.  
  311.         ProcMenuHandle = ^ProcMenuPtr;
  312.         ProcMenuPtr = ^ProcMenu;
  313.         ProcMenu = record
  314.                 mode: integer;
  315.                 pMenu: MenuHandle;
  316.                 Updater: ProcPtr;
  317.                 transIndex: integer;
  318.                 transMessage: integer;
  319.                 transRefCon: longint;
  320.                 Proto: XFERStuffHand;
  321.                 pCount: integer;
  322.                 firstID: integer;
  323.                 foldID: integer;
  324.                 autoCount: integer;
  325.                 autoComs: handle;
  326.                 theProcList: array[0..5] of ProcList;
  327.             end;
  328.  
  329.         BatFileRec = record
  330.                 FullPath: str255;                                    {full HFS pathname with filename on end}
  331.                 DoneTransfer: boolean;                           {set this when file has been transferred}
  332.                 Recorded: boolean;                                  {used internally, do NOT modify}
  333.                 ListName: string[21];                           {file listing name,used internally}
  334.                 FromDir: integer;                                    {transfer directory for file}
  335.                 ByteLen: longint;                                     {byte length of file, used internally}
  336.                 MBName: string[31];
  337.             end;
  338.  
  339.         FLSHand = ^FLSPtr;
  340.         FLSPtr = ^FLSRec;
  341.         FLSRec = record
  342.                 NumFiles: integer;                                  {max batch is 50 arbitrarily}
  343.                 BatchTime: longint;                                {used internally, approximation of transfer time(seconds)}
  344.                 BatchKBytes: longint;                             {used internally}
  345.                 FilesGoing: array[1..50] of BatFileRec;
  346.             end;
  347.  
  348.         TextHand = ^TextPtr;
  349.         TextPtr = ^TextRec;
  350.         TextRec = packed array[0..92000] of char;
  351.  
  352.         ConOne = record
  353.                 BaudID: string[15];
  354.                 BaudConstant: integer;
  355.                 ConnectNote: string[15];
  356.             end;
  357.  
  358.         ConHand = ^ConPtr;
  359.         ConPtr = ^ConRec;
  360.         ConRec = array[1..2000] of conOne;
  361.  
  362.  
  363.         InternalTransfer = record
  364.                 active: boolean;
  365.                 Sending: boolean;
  366.                 starttime: longint;
  367.             end;
  368.  
  369.         ExtDescRec = record
  370.                 fName: string[20];
  371.                 DescLeng: integer;
  372.             end;
  373.  
  374.         ULR = record    {this is stored in the HermUsers array in the UserXIPtr}
  375.                 Uname: string[31];
  376.                 Dltd: boolean;
  377.                 last: longint;
  378.                 real: string[21];
  379.             end;
  380.  
  381.         UListHand = ^UListPtr;
  382.         UListPtr = ^UListRec;
  383.         UListRec = array[0..32000] of ULR;
  384.  
  385.         CarDetType = (CTS5, DCDchip, DCDdriver);
  386.  
  387.         HermesPrompt = record
  388.                 promptLine: string[80];   {actual prompt text line}
  389.                 allowedChars: string[100]; {all other characters ignored, set to zero for full acceptance of everything}
  390.                 replaceChar: char;             {replace all input with this character for output, i.e. Password entry, set null for nothing}
  391.                 Capitalize: boolean;            {capitalize all incoming characters}
  392.                 enforceNumeric: boolean; {are numbers accepted?  overrides allowedChars string}
  393.                 autoAccept: boolean;    {automatically accept on numeric/character input deemed complete}
  394.                 wrapAround: boolean;   {at end of prompt, wrap text to next line using excess string in defs}
  395.                 wrapsonCR: boolean;
  396.                 breakChar: char;          {this key will override autoAccept and go to the next input}
  397.                 HermesColor: integer;  {on Hermes ANSI from 0-7...sets color on output, -1 is no ANSI}
  398.                 InputColor: integer;    {same as above except for user input}
  399.                 numericLow: integer;   {if enforceNumeric, low range}
  400.                 numericHigh: integer;   {if enforceNumeric, high range}
  401.                 maxChars: integer;   {maximum accepted number of characters}
  402.                 KeyString1: string[10];   {on key input, character 1 of this being received will output rest of string}
  403.                 KeyString2: string[10];   {see above}
  404.                 KeyString3: string[10];
  405.             end;
  406.  
  407.         eInfoHand = ^eInfoPtr;
  408.         eInfoPtr = ^eInfoRec;
  409.         eInfoRec = record
  410.                 allTime: boolean;   {to be called all the time or only for user menu invokes.}
  411.                 minSLforMenu: integer;
  412.                 Restriction: char;
  413.             end;
  414.  
  415.         HermUserGlobHand = ^HermUserGlobPtr;
  416.         HermUserGlobPtr = ^HermUserGlobs;
  417.         HermUserGlobs = record
  418.                 rawBuffer: packed array[0..4096] of char; { used by the DRIVER -  DON'T touch it }
  419.                 incoming: packed array[0..4096] of char;   {don't touch this either}
  420.                 myPrompt: HermesPrompt;
  421.                 toBeSent, protCodeHand: Handle;
  422.                 sendingNow: ptr;
  423.                 sysopLogOn, Prompting, stopRemote, retob, inTransfer, inHalfDuplex, readMsgs, continuous, inZScan, inNScan, fromQScan, endQScan, newFeed, timeFlagged, Single, DoCheckMessage, InPause, allDirSearch, aborted, in8BitTerm, ANSIterm: boolean;
  424.                 callFMail, chatKeySysop, sentAnon, batchTrans, wrapPrompt, promptHide, sysopStop, triedChat, threadmode, reply, writeOut: boolean;
  425.                 gettingANSI, HWHH, dirUpload, goOffinLocal, shutdownsoon, wasMadeTempSysop, negateBCR, tabbyPaused: boolean;
  426.                 inScroll, countingDown, netMail, blinkOn, useDTR, capturing, amSpying, loggedIn, doCrashmail: boolean;
  427.                 matchInterface, useWorkspace, drawingCurs, descSearch, outputting, ListedOneFile, returnafterprompt, afterHangup, listingHelp: boolean;
  428.                 curWriting, sysopKeyBuffer: charsHandle;
  429.                 curExtDesc: extDescRec;
  430.                 screenKeys: ScrnKeysHnd;
  431.                 fileTransit: FLSHand;
  432.                 myBlocker: paramBlockRec;
  433.                 replyStr, modemInit, modemHangup, termInit, ansInProgress, curPrompt, mDriverName, enteredPass: str255;
  434.                 curBaudNote, actionString, enteredPass2, typeBuffer, autoMess, doingPrompt, fileMask, excess: str255;
  435.                 inportName, outportname, replyToStr, lastTransError, SavedInPort, lastBotLine: str255;
  436.                 q, openTextSize, lastKeyPressed, startedChat, lastTry, lastFTUpdate: longint;
  437.                 currentBaud, lastLastPressed, lastCurBytes, crossLong, curTextPos, subtractOn: longInt;
  438.                 lastBlink, TimeBegin, ExtraTime, Uptime, Downtime, LASTLEFT, timeout, startCPS: longint;
  439.                 whPort, headMessage, lnsPause, inputRef, outputRef, frontCharElim, OpenTextRef, MaxPromptChars, atMail, EndAnony, totalEMails, onBatchNumber: integer;
  440.                 TextHnd: TextHand;
  441.                 cursorPos, saveCursor, savecursorRem, anchor, EndSel: point;
  442.                 lastCursorRect: rect;
  443.                 Connects: ConHand;
  444.                 numDifConnect, MaxBaud, MinBaud, inMessage, mesRead, maxLines, onLine, savedLine, configForum, inForum, inSub, numRptPrompt, realSL, inDir, tempDir, flsListed, fListedCurDir, curDirPos, tempInDir, crossInt, crossInt2, crossInt3, dirOpenNum, curNumFiles, curFore, curBack, curFont, numEMails, saveInForum, saveInSub, helpNum: integer;
  445.                 captureRef, curNumMess, activeProtocol, lastBatch: integer;
  446.                 thisUser, tempUser, MailingUser: UserRec;
  447.                 curEMailRec: EMailRec;
  448.                 CarrierDetect: CarDetType;
  449.                 curStyle: style;
  450.                 curmessage: MessgHand;
  451.                 lastFScan: longInt;
  452.                 ourMail: MesgHand;
  453.                 curMesgRec: MesgRec;
  454.                 extTrans: XFERstuffHand;
  455.                 myTrans: internalTransfer;
  456.                 curBase: subDyHand;
  457.                 TransDilg: dialogPtr;
  458.                 curFil: FilEntryRec;
  459.                 curOpenDir: aDirHand;
  460.                 blinkRgn: rgnhandle;
  461.                 curIndex: indxHand;
  462.                 myFido: FidoAddress;
  463.                 multiUsers: array[1..20] of integer;
  464.                 numMultiUsers, spying: integer;
  465.                 scrollStart: integer;
  466.                 bottomNum, numBufLins: integer;
  467.                 myProcMenu: ProcMenuHandle;
  468.                 activeUserExternal: integer;   {if >0 then external will be called}
  469.                 BoardMode: (Waiting, Terminal, User, Answering, Failed);
  470.                 BoardSection: (Logon, NewUser, MainMenu, rmv, MoveFiles, killMail, AutoVal, Batch, MultiChat, tranDef, MultiMail, Noder, messUp, renFiles, readAll, RmvFiles, GFiles, UEdit, USList, BBSlist, chUser, limdate, Download, Sort, Upload, OffStage, ListFiles, post, ChatStage, Defaults, Email, QScan, ReadMail, Amsg, Transfers, Ext, EXTERNAL);
  471.                 boardAction, savedBDaction, savedBD2: BDact;
  472.                 ValDo: (Val1, Val2);
  473.                 AutoDo: (AutoOne, AutoTwo, AutoThree, AutoFour, AutoFive, AutoSix, AutoSeven);
  474.                 ReadDo: (ReadOne, ReadTwo, ReadThree, ReadFour, ReadFive, ReadSix, ReadSeven, ReadEight, JumpForum);
  475.                 EmailDo: (WhichUser, EmailOne, EmailTwo, EmailThree, EmailFour);
  476.                 MultiDo: (MultiOne, MultiTwo, MultiThree, MultiFour);
  477.                 MultiChatDo: (Mult1, Mult2);
  478.                 BatDo: (BatOne, BatTwo, BatThree, BatFour, BatFive, BatSix, BatSeven);
  479.                 KillDo: (KillOne, KillTwo, KillThree, KillFour, KillFive);
  480.                 TransDo: (TrOne, TrTwo, TrThree, TrFour);
  481.                 bbsLdo: (Bone, BTwo, BThree, BFour, BFive, bSix, bSeven);
  482.                 upMess: (MessUpOne, MessUpTwo, MessUpThree);
  483.                 AllDo: (AllOne, AllTwo, AllThree);
  484.                 GFileDo: (G1, G2, G3, G4, G5, G6);
  485.                 ExtenDo: (ex1, ex2, ex3, EX4);
  486.                 DownDo: (DownOne, DownTwo, DownThree, DownFour, DownFive);
  487.                 RenDo: (RenOne, RenTwo, RenThree, RenFour, RenFive, RenSix, RenSeven, RenEight);
  488.                 SortDo: (SortOne, SortTwo, SortThree);
  489.                 RFDo: (RFOne, RFTwo, RFThree, RFFour, RFFive, RFSix, RFSeven, RFEight);
  490.                 ChatDo: (ChatOne, ChatTwo, ChatThree);
  491.                 NodeDo: (NodeOne, NodeTwo, NodeThree, NodeFour, NodeFive, NodeSix);
  492.                 PostDo: (PostOne, PostTwo, PostThree, PostFour);
  493.                 UploadDo: (UpOne, UpTwo, UpThree, UpFour, UpFive, UpSix, UpSeven, UpEight);
  494.                 ListDo: (ListOne, ListTwo, ListThree, ListFour, ListFive, ListSix, ListSeven);
  495.                 QDo: (Qone, QTwo, QThree, QFour, QFive, QSix, QMove, QMove2);
  496.                 UEdo: (UOne, UTwo, UThree, UFour, UFive, USix, USeven, UEight, UNine, UTen, UEleven, UTwelve, U13, U14, U15, U16, U17, U18);
  497.                 rmvDo: (RmvOne, RmvTwo);
  498.                 DefaultDo: (DefaultOne, DefaultTwo, DefaultThree, DefaultFour, DefaultFive, DefaultSix, DefaultSeven, DefaultEight, DefaultNine, DefaultTen, DefaultEleven, DefaultTwelve, DefaultThrt, def14, def15, def16, def17, D18, D19, D20, D21, D22, D24, D23);
  499.                 MainStage: (MenuText, MainPrompt, TextForce);
  500.                 NewUserStage: (NoNewText, NewUserPass, CheckNewPass, PromptHandle, CheckTrash, RealName, NewPhone, Sex, BirtMonth, BirtDay, BirtYear, ComputerType, ScrnWd, ScrnHg, TestANSI, checkColor, IsAllCorrect, PassQuest, NewPassword, GiveInfo, ConfirmPass, NewTransition, TwoTrans);
  501.                 LogonStage: (Welcome, Name, CheckName, Password, Phone, SysPass, ChkSysPass, CheckStuff, Hello, Stats, StatAuto, Transition, Trans2);
  502.                 OffDo: (SureQuest, OffText, Hanger);
  503.                 MoveDo: (moveOne, MoveTwo, MoveThree, MoveFour, MoveFive, MoveSix);
  504.                 ExternalDo: (external1, external2, theExternal);
  505.             end;
  506.  
  507.         myPrivsHand = ^myPrivsPtr;
  508.         myPrivsPtr = ^myPrivs;
  509.         myPrivs = record
  510.                 activeOn: array[1..10] of boolean;
  511.                 stage: array[1..10] of integer;
  512.             end;
  513.  
  514.         UserXIPtr = ^UserXInfoRec;
  515.         UserXInfoRec = record
  516.                 privates: myPrivsHand;
  517.                 extID: integer;
  518.                 totalNodes: integer;
  519.                 message: integer;
  520.                 curNode: PtrToWord;
  521.                 curUGlobs: PtrToLong;
  522.                 ResShared: integer;
  523.                 DataShared: integer;
  524.                 HSystPtr: SystPtr;
  525.                 HMDescPtr: MDescPtr;
  526.                 HDirDataPtr: dirDataPtr;
  527.                 HGFilePtr: GFileSecPtr;
  528.                 filesPath: StringPtr;
  529.                 HermUsers: UListHand;
  530.                 n: array[1..10] of HermUserGlobPtr;
  531.                 procs: array[0..0] of procPtr;
  532.             end;
  533.  
  534.     procedure bCR (theRout: ProcPtr);   {selector = 0}
  535.     inline
  536.         $205f, $4e90;
  537.     procedure OutLine (goingOut: str255; NLatBegin: boolean; typeLine: integer; theRout: ProcPtr);  {selector=1}
  538.     inline
  539.         $205f, $4e90;
  540.     procedure HangUpAndReset (theRout: ProcPtr);   {selector = 2}
  541.     inline
  542.         $205f, $4e90;
  543.     procedure PromptUser (whichNode: integer; theRout: ProcPtr);   {selector = 3}
  544.     inline
  545.         $205f, $4e90;
  546.     procedure LettersPrompt (prompt, accepted: str255; sizeLimit: integer; auto, wrap, capital: boolean; replace: char; theRout: ProcPtr);  {selector=4}
  547.     inline
  548.         $205f, $4e90;
  549.     procedure NumbersPrompt (prompt, accepted: STR255; high, low: integer; theRout: ProcPtr);  {selector=5}
  550.     inline
  551.         $205f, $4e90;
  552.     procedure YesNoQuestion (prompt: STR255; yesIsDefault: boolean; theRout: ProcPtr);  {selector=6}
  553.     inline
  554.         $205f, $4e90;
  555.     procedure GoHome (theRout: procPtr);  {selector=7}
  556.     inline
  557.         $205f, $4e90;
  558.     procedure BackSpace (howMany: integer; theRout: procPtr);  {selector=8}
  559.     inline
  560.         $205f, $4e90;
  561.     procedure ANSIPrompter (numChars: integer; theRout: ProcPtr);  {selector=9}
  562.     inline
  563.         $205f, $4e90;
  564.     function ReadTextFile (fileName: str255; storedAs: integer; insertPath: boolean; theRout: ProcPtr): boolean;  {selector=10}
  565.     inline
  566.         $205f, $4e90;
  567.     procedure RePrintPrompt (theRout: ProcPtr);  {selector=11}
  568.     inline
  569.         $205f, $4e90;
  570.     procedure OutChr (theChar: char; theRout: ProcPtr);  {selector=12}
  571.     inline
  572.         $205f, $4e90;
  573.     procedure ANSICode (theCode: str255; theRout: ProcPtr); {selector=13}
  574.     inline
  575.         $205f, $4e90;
  576.     procedure PAUSEPrompt (prompt: str255; theRout: ProcPtr);  {selector=14}
  577.     inline
  578.         $205f, $4e90;
  579.     function FindUser (SearchString: str255; var UserFound: UserRec; theRout: ProcPtr): boolean;  {selector=15}
  580.     inline
  581.         $205f, $4e90;
  582. implementation
  583. end.